package integer;

/**
 * 包装类
 * java提供了8个包装类 分别对应8个基本类型
 * 基本类型是以值的方式存在，所以没有面向对象特性。为了让基本类型可以参与
 * 面向对象开发，出现了8个包装类，目的是让基本类型可以以对象形式表示。
 */
public class IntergerDemo {
    public static void main(String[] args) {
    /*
     基本数据类型        包装类
     bute               Byte
     short              Short
     int                Integer
     long               Long
     filat              Float
     double             Double
     doolean            Doolean
     char               Character
     */
        int num = 127;//基本类型
        Integer i1 = Integer.valueOf(num);
        Integer i2 = Integer.valueOf(num);
        System.out.println(i1 == i2);//一个字节之内不会false （0-7）
        System.out.println(i1.equals(i2));//true

        double dum = 123.14;//浮点类型
        Double d1 = Double.valueOf(dum);
        Double d2 = Double.valueOf(dum);
        System.out.println(d1==d2);//false
        System.out.println(d1.equals(d2));//true
        /*
         类型转换
         */
        int in = i1.intValue();
        int it = d1.intValue();
        System.out.println(in);
        System.out.println(it);
        double dd = i1.doubleValue();
        System.out.println(dd);
        /*
        包装类可以将字符串类型解析为对应的基本类型，前提是该字符串描述了该基本类型
        可以保存的值
         */
        String line = "1230";
        /*String li = "123.5"; 报异常 不能解析为整数
        int r = Integer.parseInt(li);*/
        int u = Integer.parseInt(line);
        System.out.println(u);
        double d = Double.parseDouble(line);
        System.out.println(d);

        /*
        Jdk5之后推出一个新特性：自动拆装箱
        编译器在遇到基本类型和包装类引用类型互赋值的情况时会自动补充完他们之间的转换
        因此该特性是认可的，字节码文件中并不存在互相直接赋值的情况
         */
        int q = 123;
        //自动封装  = Integer.valueOf(123);
        Integer q1 = q;
        //也可以        int q = Integer.valueOf(123);
        int qu = q1;// int qu = q1.intValue  把引用类型的值自动拆解成整数再赋值


    }
}
